package com.ja10.books;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.example.books.R;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

public class ReserveActivity extends Activity {
	
	private SimpleDatabaseHelper helper = null;
	SearchListAdapter<BookList> adapter = null;
	ArrayList<BookList> data = null;
	BookList item = null;
	ListView list = null;
	Intent i = null;
	
	String time = null;
	
	SQLiteDatabase db = null;
    
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_reserve_list);	
		
		// ネットワーク接続を取得
		ConnectivityManager cm = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
		boolean net = new NetworkGet(cm).net;
		
		// ログインIDの取得
		SharedPreferences settings = getSharedPreferences(LoginActivity.PREFERENCES_FILE_NAME, Activity.MODE_PRIVATE);
		String loginId = settings.getString("id", "");

		// ネットワーク接続＆ログイン時
		if(net && !"".equals(loginId)) {
			// 貸出の完了した書籍を端末DBより削除する処理
			listUpdate(loginId);
		}
	}
	
	// 貸出の完了した書籍を端末DBより削除
	public void listUpdate(String loginId) {
		
		helper = new SimpleDatabaseHelper(this);
		db = helper.getReadableDatabase();
		
		// 予約後貸出された書籍のISBNを取得するSQL文を用意
		String sql = "select isbn from rentals, members, books " +
						"where rentals.member_id = members.id " +
						"and rentals.book_id = books.id " +
						"and reserve_id is not null " +
						"and user_id = '" + loginId + "'";
		
		Connection con = null;
		Statement smt = null;

		try {
			con = DBManager.getConnection();
			smt = con.createStatement();
			ResultSet rs = smt.executeQuery(sql);
			
			StringBuffer delIsbn = new StringBuffer();
			
			// 予約後貸出の完了した書籍ISBNをStringBufferに並べて追加
			while(rs.next()){
				delIsbn.append("'" + rs.getString("isbn") + "',");
			}
			rs.close();
			
			if(delIsbn.length() > 0) {
				// 最後のカンマを除去
				delIsbn.delete(delIsbn.length()-1, delIsbn.length());
				// 検出したISBNを元に端末DBより削除の実行
				db.delete("reserves", "isbn in (" + delIsbn + ")", null);
			}
			db.close();
			
		} catch(SQLException e) {
			e.printStackTrace();
		} finally {
			if(smt != null) {
				try {
					smt.close();
				} catch(SQLException ignore) {
					// none
				}
			}
			if(con != null) {
				try {
					con.close();
				} catch(SQLException ignore) {
					// none
				}
			}
		}
	}
	
	@Override
	protected void onStart() {
		super.onStart();
		
		helper = new SimpleDatabaseHelper(this);
		db = helper.getReadableDatabase();
		
		Cursor cs = db.query("reserves", null, null, null, null, null, "id desc");
			
		// 配列の内容をReserveListオブジェクトに詰め替え
		data = new ArrayList<BookList>();
			
		int cnt = 0;	// 検索件数
           
		boolean eol = cs.moveToFirst();
		while(eol) {
			BookList item = new BookList();
			item.setId(cs.getInt(0));
			item.setGenreName(cs.getString(1));
			item.setPublisherName(cs.getString(2));
			item.setTitle(cs.getString(3));
			item.setWriter(cs.getString(4));
			item.setContent(cs.getString(5));
			item.setPublicationDate(cs.getString(6));
			item.setPictureBmp(cs.getBlob(7));
			item.setIsbn(cs.getString(8));
			data.add(item);
			cnt++;
			eol = cs.moveToNext();
		}
		cs.close();
		db.close();
		// 検索件数を取得
		TextView txtCnt1 = (TextView)findViewById(R.id.txtCnt1);
		String cntStr = Integer.toString(cnt);
		txtCnt1.setText(cntStr);
		
		// BookList配列とレイアウトを関連付け
		adapter = new SearchListAdapter<BookList>(this, data, R.layout.list_item_book, 1);
        ListView listView = (ListView) findViewById(R.id.listReserve);
        listView.setAdapter(adapter);
           
        //　----------リスト項目クリック時の処理を定義
        listView.setOnItemClickListener(
        				new AdapterView.OnItemClickListener() {
        					public void onItemClick(AdapterView<?> av, View view, int position, long id){
	
        						Intent i = new Intent(getBaseContext(), ReserveDetailActivity.class);
        						// ISBNをインテントにセット
        						i.putExtra("isbn", data.get(position).getIsbn());
        						startActivity(i);
        					}
        				}
        );

	}

	//----------------　[ログイン]ボタンクリック時に呼び出されるメソッド
		public void btnLogin_onClick(View view){
				
		// LoginActivityへのインテントを作成
			Intent i = new Intent(this, LoginActivity.class);
		// アクティビティを起動
			startActivity(i);
		}	
			
	//----------------　[メニュー]ボタンクリック時に呼び出されるメソッド
		public void btnMenu_onClick(View view){
				
			Intent i = new Intent(this, MainActivity.class);
			startActivity(i);
			finish();
		}
}
	